SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers

نویسندگان

  • Yoann Padioleau
  • Julia L. Lawall
  • Gilles Muller
چکیده

Collateral evolutions are a pervasive problem in large-scale software development. Such evolutions occur when an evolution that affects the interface of a generic library entails modifications, i.e., collateral evolutions, in all library clients. Performing these collateral evolutions requires identifying the affected files and modifying all of the code fragments in these files that in some way depend on the changed interface. We have studied the collateral evolution problem in the context of Linux device drivers [1]. Collateral evolution is a significant problem in this context because device drivers make up over half of the Linux source code and are highly dependent on the kernel and driver support libraries for functions and data structures. Our EuroSys study [1] has shown that from one version of Linux to the next, collateral evolutions can account for up to 35% of the lines modified in such code. Moreover, those collateral evolutions may be complex, entailing substantial code reorganizations. Currently, collateral evolutions in Linux are mostly done manually using a text editor, or with tools such as sed. The large number of Linux drivers, and complexity of the collateral evolutions, however, implies that these approaches are time-consuming and unreliable, leading to subtle errors when modifications are not done consistently. To address these problems, we propose a transformation language, SmPL,1 to specify collateral evolutions. Because Linux programmers are used to exchange, read, and manipulate program modifications in terms of patches, we have built our language around the idea and syntax of a patch, extending patches to semantic patches. Two important characteristics of semantic patches are:

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

The Semantics of "Semantic Patches" in Coccinelle: Program Transformation for the Working Programmer

We rationally reconstruct the core of the Coccinelle system, used for automating and documenting collateral evolutions in Linux device drivers. A denotational semantics of the system’s underlying semantic patch language (SmPL) is developed, and extended to include variables. The semantics is in essence a higher-order functional program and so executable; but is inefficient and limited to straig...

متن کامل

Semantic Patches Documenting and Automating Collateral Evolutions in Linux Device Drivers

Device drivers form the glue code between an operating system and its devices. In Linux, device drivers are highly reliant for this on the various Linux internal libraries, which encapsulate generic functionalities related to the various busses and device types. In recent years, these libraries have been evolving rapidly, to address new requirements and improve performance. In response to each ...

متن کامل

Tarantula: Killing Driver Bugs Before They Hatch

The Linux operating system is undergoing continual evolution. Evolution in the kernel and generic driver modules often triggers the need for corresponding evolutions in specific device drivers. Such collateral evolutions are tedious, because of the large number of device drivers, and error-prone, because of the complexity of the code modifications involved. We propose an automatic tool, Tarantu...

متن کامل

Improving Driver Robustness: an Evaluation of the Devil Approach Laurent Réveillère and Gilles Muller

To keep up with the frantic pace at which devices come out, drivers need to be quickly developed, debugged and tested. We have recently introduced a new approach to improve driver robustness based on an Interface Definition Language, named Devil. Devil allows a high-level definition of the communication of a device. A compiler automatically checks the consistency of a Devil specification and ge...

متن کامل

Who Writes What Checkers? - Learning from Bug Repositories

Static code checkers have been useful for finding bugs in large-scale C code. Domain-specific checkers are particularly effective in finding deep/subtle bugs because they can make use of domain-specific knowledge. To develop domain-specific checkers, however, typical bug patterns in certain domains must first be extracted. This paper explores the use of machine learning to help extract bug patt...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:
  • Electr. Notes Theor. Comput. Sci.

دوره 166  شماره 

صفحات  -

تاریخ انتشار 2007